home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / GNU / ags_000.lha / gs261gt.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-15  |  8.9 KB  |  339 lines

  1. #include <stdio.h>
  2. #include <exec/types.h>
  3. #include <exec/memory.h>
  4. #include <intuition/intuition.h>
  5. #include <intuition/intuitionbase.h>
  6. #include <intuition/cghooks.h>
  7. #include <intuition/classes.h>
  8. #include <intuition/gadgetclass.h>
  9. #include <intuition/imageclass.h>
  10. #include <intuition/icclass.h>
  11. #include <clib/intuition_protos.h>
  12. #include <clib/exec_protos.h>
  13. #include <clib/utility_protos.h>
  14. #include "rkmmodel.h"
  15.  
  16. #define LR_WIDTH 16
  17. #define UD_HEIGHT 11
  18.  
  19. extern Class *initRKMModClass(void);
  20.  
  21. struct IntuitionBase *IntuitionBase;
  22. struct UtilityBase *UtilityBase;
  23.  
  24. void add_test_gadget(struct Window *,struct Screen *);
  25. void delete_test_gadget(struct Window *,struct Gadget *);
  26. void msg_loop(struct Window *);
  27.  
  28. int main(void)
  29. {
  30.   struct Screen *sc;
  31.   struct Window *w;
  32.   struct Gadget *g;
  33.   
  34.   if((IntuitionBase=(struct IntuitionBase *)\
  35.       OpenLibrary("intuition.library",37))!=NULL)
  36.     {
  37.       if((UtilityBase=(struct UtilityBase *)\
  38.       OpenLibrary("utility.library",37))!=NULL)
  39.     {
  40.       if((sc=LockPubScreen(NULL))!=NULL)
  41.         {
  42.           if((w=OpenWindowTags(NULL, \
  43.                    WA_PubScreen, sc, \
  44.                    WA_Width, 200, \
  45.                    WA_Height, 200, \
  46.                    WA_Title, "Gadget Test", \
  47.                    WA_DragBar, TRUE,\
  48.                    WA_DepthGadget, TRUE,\
  49.                    WA_GimmeZeroZero, TRUE,\
  50.                    WA_SmartRefresh, TRUE,\
  51.                    WA_AutoAdjust, TRUE,\
  52.                    WA_SizeGadget, TRUE,\
  53.                    WA_SizeBBottom, TRUE,\
  54.                    WA_SizeBRight, TRUE,\
  55.                    WA_MinWidth,50,\
  56.                    WA_MaxWidth,1008,\
  57.                    WA_MinHeight,50,\
  58.                    WA_MaxHeight,1024,\
  59.                    WA_CloseGadget,TRUE,\
  60.                    WA_IDCMP,IDCMP_IDCMPUPDATE|\
  61.                    IDCMP_CLOSEWINDOW,\
  62.                    TAG_END))!=NULL)
  63.         {
  64.           add_test_gadget(w,sc);
  65.           msg_loop(w);
  66.           CloseWindow(w);
  67.         }
  68.           else fprintf(stderr,"can't open window\n");
  69.           UnlockPubScreen(NULL,sc);
  70.         }
  71.       else fprintf(stderr,"can't lock standard public screen\n");
  72.       CloseLibrary((struct Library *)UtilityBase);
  73.     }
  74.       else fprintf(stderr,"can't open untility library version >=37\n");
  75.       CloseLibrary((struct Library *)IntuitionBase);
  76.     }
  77.   else fprintf(stderr,"can't open intuition library version >=37\n");
  78. }
  79.  
  80. void add_test_gadget(struct Window *w,struct Screen *s)
  81. {
  82.   struct Gadget *pg_h;
  83.   struct Gadget *bg_h1;
  84.   struct Gadget *bg_h2=NULL;
  85.   
  86.   struct Gadget *pg_v;
  87.   struct Gadget *bg_v1=NULL;
  88.   struct Gadget *bg_v2=NULL;
  89.   
  90.   struct Image *up;
  91.   struct Image *down;
  92.   struct Image *left;
  93.   struct Image *right;
  94.   int tbs=w->BorderTop;
  95.   int rbs=w->BorderRight;
  96.   int bbs=w->BorderBottom;
  97.   int lbs=w->BorderLeft;
  98.   Class *rkm;
  99.   struct Object *my_rkm_model1;
  100.   struct Object *icc_c2p_h;
  101.   struct Object *my_rkm_model2;
  102.   struct Object *icc_c2p_v;
  103.   static struct TagItem id2u_map[]={GA_ID,RKMMOD_Up,TAG_DONE};
  104.   static struct TagItem id2d_map[]={GA_ID,RKMMOD_Down,TAG_DONE};
  105.   static struct TagItem c2p_map[]={RKMMOD_CurrVal,PGA_Top,TAG_DONE};
  106.   static struct TagItem p2c_map[]={PGA_Top,RKMMOD_CurrVal,TAG_DONE};
  107.   
  108.   if((pg_h=(struct Gadget *)NewObject(NULL,"propgclass",\
  109.                       GA_ID,1,\
  110.                       GA_RelBottom,-bbs+2,\
  111.                       GA_Left,lbs,\
  112.                       GA_RelWidth,-lbs-rbs-2*LR_WIDTH-2,\
  113.                       GA_Height,bbs-3,\
  114.                       GA_BottomBorder,TRUE,\
  115.                       GA_GZZGadget,TRUE,\
  116.                       PGA_Freedom,FREEHORIZ,\
  117.                       PGA_NewLook, TRUE,\
  118.                       PGA_Top,0,\
  119.                       PGA_Total,100,\
  120.                       PGA_Visible,20,\
  121.                       TAG_END))!=NULL)
  122.     AddGadget(w,pg_h,-1);
  123.   if((left=(struct Image *)NewObject(NULL,"sysiclass",
  124.                      IA_Left,0,\
  125.                      IA_Top,0,\
  126.                      IA_Width,16,\
  127.                      IA_Height,10,\
  128.                      SYSIA_Which,LEFTIMAGE,\
  129.                      SYSIA_Size,SYSISIZE_MEDRES,\
  130.                      SYSIA_DrawInfo,GetScreenDrawInfo(s),\
  131.                      TAG_END))!=NULL)
  132.     {
  133.       if((bg_h1=(struct Gadget *)NewObject(NULL,"buttongclass",\
  134.                        GA_ID,2,\
  135.                        GA_RelBottom,-bbs+1,\
  136.                        GA_RelRight,-rbs-2*LR_WIDTH,\
  137.                        GA_Width,16,\
  138.                        GA_Height,10,\
  139.                        GA_Image,left,\
  140.                        GA_GZZGadget,TRUE,\
  141.                        GA_BottomBorder,TRUE,\
  142.                        TAG_END))!=NULL)              
  143.     AddGadget(w,bg_h1,-1);
  144.     }
  145.   if((right=(struct Image *)NewObject(NULL,"sysiclass",
  146.                       IA_Left,0,\
  147.                       IA_Top,0,\
  148.                       IA_Width,16,\
  149.                       IA_Height,10,\
  150.                       SYSIA_Which,RIGHTIMAGE,\
  151.                       SYSIA_Size,SYSISIZE_MEDRES,\
  152.                       SYSIA_DrawInfo,GetScreenDrawInfo(s),\
  153.                       TAG_END))!=NULL)
  154.     {
  155.       if((bg_h2=(struct Gadget *)NewObject(NULL,"buttongclass",\
  156.                        GA_ID,3,\
  157.                        GA_RelBottom,-bbs+1,\
  158.                        GA_RelRight,-rbs-LR_WIDTH,\
  159.                        GA_Width,16,\
  160.                        GA_Height,10,\
  161.                        GA_Image,right,\
  162.                        GA_GZZGadget,TRUE,\
  163.                        GA_BottomBorder,TRUE,\
  164.                        TAG_END))!=NULL)
  165.     AddGadget(w,bg_h2,-1);
  166.     }
  167.   if((pg_v=(struct Gadget *)NewObject(NULL,"propgclass",\
  168.                       GA_ID,4,\
  169.                       GA_Top,tbs,\
  170.                       GA_RelRight,-rbs+4,\
  171.                       GA_Width,rbs-6,\
  172.                       GA_RelHeight,-tbs-bbs-2*UD_HEIGHT-1,\
  173.                       GA_RightBorder,TRUE,\
  174.                       GA_GZZGadget,TRUE,\
  175.                       PGA_Freedom,FREEVERT,\
  176.                       PGA_NewLook, TRUE,\
  177.                       PGA_Top,0,\
  178.                       PGA_Total,100,\
  179.                       PGA_Visible,20,\
  180.                       TAG_END))!=NULL)
  181.     AddGadget(w,pg_v,-1);
  182.   if((up=(struct Image *)NewObject(NULL,"sysiclass",
  183.                    IA_Left,0,\
  184.                    IA_Top,0,\
  185.                    IA_Width,18,\
  186.                    IA_Height,11,\
  187.                    SYSIA_Which,UPIMAGE,\
  188.                    SYSIA_Size,SYSISIZE_MEDRES,\
  189.                    SYSIA_DrawInfo,GetScreenDrawInfo(s),\
  190.                    TAG_END))!=NULL)
  191.     {
  192.       if((bg_v1=(struct Gadget *)NewObject(NULL,"buttongclass",\
  193.                        GA_ID,5,\
  194.                        GA_RelBottom,-bbs-2*UD_HEIGHT+1,\
  195.                        GA_RelRight,-rbs+1,\
  196.                        GA_Width,18,\
  197.                        GA_Height,11,\
  198.                        GA_Image,up,\
  199.                        GA_GZZGadget,TRUE,\
  200.                        GA_RightBorder,TRUE,\
  201.                        TAG_END))!=NULL)
  202.     AddGadget(w,bg_v1,-1);
  203.     }
  204.   if((down=(struct Image *)NewObject(NULL,"sysiclass",
  205.                      IA_Left,0,\
  206.                      IA_Top,0,\
  207.                      IA_Width,18,\
  208.                      IA_Height,11,\
  209.                      SYSIA_Which,DOWNIMAGE,\
  210.                      SYSIA_Size,SYSISIZE_MEDRES,\
  211.                      SYSIA_DrawInfo,GetScreenDrawInfo(s),\
  212.                      TAG_END))!=NULL)
  213.     {
  214.       if((bg_v2=(struct Gadget *)NewObject(NULL,"buttongclass",\
  215.                        GA_ID,6,\
  216.                        GA_RelBottom,-bbs-UD_HEIGHT+1,\
  217.                        GA_RelRight,-rbs+1,\
  218.                        GA_Width,18,\
  219.                        GA_Height,11,\
  220.                        GA_Image,down,\
  221.                        GA_GZZGadget,TRUE,\
  222.                        GA_BottomBorder,TRUE,\
  223.                        TAG_END))!=NULL)
  224.     AddGadget(w,bg_v2,-1);
  225.     }
  226.   
  227.   if((rkm=initRKMModClass())!=NULL)
  228.     {
  229.       if((my_rkm_model1=NewObject(rkm,NULL,\
  230.                   RKMMOD_CurrVal,0,\
  231.                   RKMMOD_Limit,100,\
  232.                   RKMMOD_Id,0,\
  233.                   ICA_TARGET,ICTARGET_IDCMP,\
  234.                   TAG_END))!=NULL)
  235.     {
  236.       if((icc_c2p_h=NewObjectA(NULL,"icclass",NULL))!=NULL)
  237.         {
  238.           SetGadgetAttrs(pg_h,w,NULL,\
  239.                  ICA_TARGET,my_rkm_model1,\
  240.                  ICA_MAP,p2c_map);
  241.           SetGadgetAttrs(bg_h1,w,NULL,\
  242.                  ICA_TARGET,my_rkm_model1,\
  243.                  ICA_MAP,id2d_map);
  244.           SetGadgetAttrs(bg_h2,w,NULL,\
  245.                  ICA_TARGET,my_rkm_model1,\
  246.                  ICA_MAP,id2u_map);
  247.           DoMethod(my_rkm_model1,OM_ADDMEMBER,icc_c2p_h);
  248.           SetAttrs(icc_c2p_h,\
  249.                ICA_TARGET,pg_h,\
  250.                ICA_MAP,c2p_map);
  251.         }
  252.       else fprintf(stderr,"can't open icc object\n");
  253.     }
  254.       else fprintf(stderr,"can't open rkm model object\n");
  255.       if((my_rkm_model2=NewObject(rkm,NULL,\
  256.                   RKMMOD_CurrVal,0,\
  257.                   RKMMOD_Limit,100,\
  258.                   RKMMOD_Id,1,\
  259.                   ICA_TARGET,ICTARGET_IDCMP,\
  260.                   TAG_END))!=NULL)
  261.     {
  262.       if((icc_c2p_v=NewObjectA(NULL,"icclass",NULL))!=NULL)
  263.         {
  264.           SetGadgetAttrs(pg_v,w,NULL,\
  265.                  ICA_TARGET,my_rkm_model2,\
  266.                  ICA_MAP,p2c_map);
  267.           SetGadgetAttrs(bg_v1,w,NULL,\
  268.                  ICA_TARGET,my_rkm_model2,\
  269.                  ICA_MAP,id2d_map);
  270.           SetGadgetAttrs(bg_v2,w,NULL,\
  271.                  ICA_TARGET,my_rkm_model2,\
  272.                  ICA_MAP,id2u_map);
  273.           DoMethod(my_rkm_model2,OM_ADDMEMBER,icc_c2p_v);
  274.           SetAttrs(icc_c2p_v,\
  275.                ICA_TARGET,pg_v,\
  276.                ICA_MAP,c2p_map);
  277.         }
  278.       else fprintf(stderr,"can't open icc object\n");
  279.     }
  280.       else fprintf(stderr,"can't open rkm model object\n");
  281.     }
  282.   else fprintf(stderr,"can't create rkm model class\n");
  283.   RefreshGadgets(pg_h,w,NULL);
  284. }
  285.  
  286. void delete_test_gadget(struct Window *w,struct Gadget *g)
  287. {
  288. }
  289.  
  290. void msg_loop(struct Window *w)
  291. {
  292.   struct IntuiMessage *imsg;
  293.   BOOL end=FALSE;
  294.   struct TagItem *ti,*tstate;
  295.   BOOL is_rkmmod;
  296.   ULONG val;
  297.   int rkm_id;
  298.   
  299.   do
  300.     {
  301.       WaitPort(w->UserPort);
  302.       while((imsg=(struct IntuiMessage *)GetMsg(w->UserPort))!=NULL)
  303.     {
  304.       is_rkmmod=FALSE;
  305.       switch(imsg->Class)
  306.         {
  307.         case IDCMP_IDCMPUPDATE:
  308.           /*
  309.           fprintf(stderr,"curr val %d\n",imsg->Code);
  310.           */
  311.           tstate=ti=(struct TagItem *)imsg->IAddress;
  312.           while((ti=NextTagItem(&tstate))!=NULL)
  313.         {
  314.           switch(ti->ti_Tag)
  315.             {
  316.             case RKMMOD_Id:
  317.               is_rkmmod=TRUE;
  318.               rkm_id=ti->ti_Data;
  319.               break;
  320.             case RKMMOD_CurrVal:
  321.               val=ti->ti_Data;
  322.               break;
  323.             }
  324.         }
  325.           if(is_rkmmod)
  326.         {
  327.           printf("rkmmod %d: %d\n",rkm_id,val);
  328.         }
  329.           break;
  330.         case IDCMP_CLOSEWINDOW:
  331.           end=TRUE;
  332.           break;
  333.         }
  334.       ReplyMsg((struct Message *)imsg);
  335.     }
  336.     }
  337.   while(!end);
  338. }
  339.